namespace Core
{
    using System.Collections.Generic;
    using Base;
    using Contracts.Enums;
    using Contracts.Interfaces;

    /// <summary>
    /// Empty ammunition class
    /// </summary>
    public sealed class NullAmmunition : AmmunitionBase
    {
        private static readonly NullAmmunition _instance = new NullAmmunition();

        /// <summary>
        /// Default single instance ammunition value
        /// </summary>
        public static IAmmunition Instance
        {
            get { return _instance; }
        }

        private NullAmmunition(){}

        public override IEnumerable<IFeature<object>> Features
        {
            get { return null; }
        }

        public override bool HasFeatures
        {
            get { return false; }
        }

        public override IEnumerable<IModifier> Modifiers
        {
            get { return null; }
        }

        public override bool HasVisibleModifiers
        {
            get { return false; }
        }

        public override string Name
        {
            get { return Core.Resources.Traduction.label_none; }
        }

        public override string Description
        {
            get { return null; }
        }

        public override AmmunitionSizesEnum Size
        {
            get { return AmmunitionSizesEnum.NotDefined; }
        }

        public override AmmunitionGroupesEnum Group
        {
            get { return AmmunitionGroupesEnum.NotDefined; }
        }

        public override AmmunitionTypesEnum Type
        {
            get {  return AmmunitionTypesEnum.NotDefined; }
        }

        public override string ToString()
        {
            return Name;
        }
    }
}